package com.example.jeudupendu;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Random;

import android.content.Context;

public class Controleur {
	/*Variables privées*/
	private Model mon_model;
	private ArrayList<String> mes_lignes;
	private Context mon_context;
	private ArrayList<Partie> mes_parties;
	/*Constructeur*/
	public Controleur(Context context){
		mon_context=context;
		mes_lignes=new ArrayList<>();
		mes_parties= new ArrayList<>();
		mon_model= new Model("mots.txt", mon_context);
		recup_mots();
	}

	/* Getter et Setter*/
	public Model getMon_model() {
		return mon_model;
	}
	public void setMon_model(Model mon_model) {
		this.mon_model = mon_model;
	}
	public ArrayList<String> getMes_lignes() {
		return mes_lignes;
	}
	public void setMes_lignes(ArrayList<String> mes_lignes) {
		this.mes_lignes = mes_lignes;
	}
	public Context getMon_context() {
		return mon_context;
	}
	public void setMon_context(Context mon_context) {
		this.mon_context = mon_context;
	}
	public ArrayList<Partie> getMes_parties() {
		return mes_parties;
	}
	public void setMes_parties(ArrayList<Partie> mes_parties) {
		this.mes_parties = mes_parties;
	}
	public String retourne_mot_secret(){
		return mes_parties.get(mes_parties.size()-1).getMon_mot_secret();
	}
	public int retourne_nb_coup(){
		return mes_parties.get(mes_parties.size()-1).getNb_coups();
	}
	/*Méthodes publiques*/
	public void recup_mots(){
		boolean open=mon_model.ouvrir_fichier();
		if(open==true){
			mes_lignes = mon_model.lire_fichier();
			mon_model.fermer_fichier();
		}

	}
	public String choisir_mot(){
		String cretour="@vide";
		Random rand = new Random();
		int nombreAleatoire = rand.nextInt(mes_lignes.size());
		if(!mes_lignes.isEmpty()){
			cretour = mes_lignes.get(nombreAleatoire);
			mes_lignes.remove(nombreAleatoire);
		}

		return cretour;
	}
	public String demarre_partie(){
		String ms="@vide";
		if(choisir_mot()!="@vide"){
			Partie unePartie= new Partie(choisir_mot());
			mes_parties.add(unePartie);
			ms=unePartie.getMon_mot_secret();
		}
		return ms;
	}
	
	public String[] recoit_caractere(char c){
		String [] vretour = null;
		vretour= new String[4];
		Partie laPartie=mes_parties.get(mes_parties.size()-1);
		laPartie.modifier_mot_secret(c);
		vretour[0]=laPartie.getMon_mot_secret();
		vretour[1]=laPartie.getMon_mot();
		if(laPartie.isPartie_gagnee()){
			vretour[2]="@gagne";
		}else{
			if(laPartie.isPartie_perdue()){
				vretour[2]="@perdu";
			}
			else{
				vretour[2]="";
			}
		}
		vretour[3]=String.valueOf(laPartie.getNb_coups());
		return vretour;
	}
	public String[] recoit_mot(String vmot){
		String [] vretour = null;
		vretour= new String[4];
		Partie laPartie=mes_parties.get(mes_parties.size()-1);
		laPartie.verif_mot(vmot);
		vretour[0]=laPartie.getMon_mot_secret();
		vretour[1]=laPartie.getMon_mot();
		if(laPartie.isPartie_gagnee()){
			vretour[2]="@gagne";
		}else{
			if(laPartie.isPartie_perdue()){
				vretour[2]="@perdu";
			}
			else{
				vretour[2]="";
			}
		}
		vretour[3]=String.valueOf(laPartie.getNb_coups());
		return vretour;
	}
	public String retourne_aide(){
		return mes_parties.get(mes_parties.size()-1).getMon_aide();
		}
}
